package cn.wujiangbo.task;

import cn.wujiangbo.domain.User;
import cn.wujiangbo.service.IUserService;
import cn.wujiangbo.utils.MyTools;
import cn.wujiangbo.utils.excel.ReadExcelTools;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import java.util.List;

/**
 * 读取Excel入库操作（单线程操作）
 */
//@Component
public class ReadExcelTask {

    @Autowired
    private IUserService userService;

    //每X秒运行一次
    @Scheduled(cron = "0/20 * * * * *")
    public void readExcelTask() {
        String filePath = "E:/excel";
        //先获取指定路径下的所有需要读取的Excel文件的全路径，如：E:\excel\testExcel_175920.xlsx
        List<String> folderFile = MyTools.getFolderFile(filePath);
        if(null != folderFile && folderFile.size() > 0){
            long t1 = System.currentTimeMillis();
            for(int i=0; i<folderFile.size(); i++){
                //有文件就读取入库
                String excelFilePath = folderFile.get(i);
                System.out.println("开始读取文件 [" + excelFilePath + "] 的内容，");
                List<User> userList = ReadExcelTools.readExcel(excelFilePath);
                if(userList != null && userList.size() > 0){
                    System.out.println("从文件 [" + excelFilePath + "] 中读取记录 " + userList.size() + " 条");
                    //批量添加数据到数据库中
                    userService.insertBatch(userList);
                }
                //文件读取完成并入库成功，将该文件删除（真实项目中不能删除，最好是拷贝到其他目录做备份）
                MyTools.deleteFile(excelFilePath);
            }
            long t2 = System.currentTimeMillis();
            System.out.println("读取Excel文件入库任务-完成，共处理 " + folderFile.size() + " 个文件，耗时："+ (t2-t1) + "毫秒");
        }
        else{
            System.out.println("目录 [" + filePath + "] 中没有Excel文件啦.......");
        }
    }
}